package com.diandian.pos.parse;

import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.alibaba.fastjson.JSONObject;
import com.diandian.pos.rabbitmq.MessageType;

/**
 * 收银错误消息上传解析
 *
 * @author Administrator
 */
public class ErrorMessageParser implements Parser {
    private Logger log = LoggerFactory.getLogger(ErrorMessageParser.class);
    @Override
    public String doParse(String str) {
        JSONObject msg = JSONObject.parseObject(str);
        int opType = 0;
        try {
            opType = msg.getInteger("op_type"); // 操作类型
        } catch (Exception e) {
            log.info("操作类型：" + msg);
            return str;
        }
        if (opType != MessageType.ERROR_MSG_REQ)
            return str;
        String shopId = msg.getString("shop_id");
        if (StringUtils.isBlank(shopId))//任意为空不处理
            return str;
        str = save(msg);
        return str;
    }


    private String save(JSONObject data) {
    	/**
    	 * {
	opt_type:10000,
	shop_id:17815,
	current_op_type:673,//当前处理的数据的异常操作类型，如673为获取打印机数据
	err_title:"打印机异常 、自定义异常或语言异常，如NullPointException等",
	err_content:"详细错误信息内容或原下发的消息数据",
	err_level:1,//错误级别，值越大级别越高
	err_code:"错误编码"//错误编码,扩展字段，预留
	err_type:20,//类型，1严重错误，2一般错误，10警告，11风险预警，20一般消息
	err_src:1//信息上报源，1收银，2盒子
}
    	 */
    	
    	 JSONObject ret = new JSONObject();
    	 try{
	    	String shopId = data.getString("shop_id");
	    	int currentOptType = data.getIntValue("current_op_type");//current_opt_type
	    	String errTitle = data.getString("err_title");
	    	String errContent = data.getString("err_content");
	    	int errLevel = data.getIntValue("err_level");
	    	String errCode = data.getString("err_code");
	    	int errType = data.getIntValue("err_type");
	    	int errSrc = data.getIntValue("err_src");
//	    	new PosErrorMsg().set("shop_id", shopId).set("opt_type", currentOptType)
//	    	.set("err_title", errTitle).set("err_content", errContent)
//	    	.set("err_level", errLevel).set("err_type", errType)
//	    	.set("err_code", errCode).set("create_time", Calendar.getInstance().getTime()).set("err_src", errSrc).save();
    	 }catch(Exception e){
    		 log.error("收银异常信息上报处理错误：",e);
    		 ret.put("ret_code", 0);
    		 ret.put("ret_msg", "收银异常信息上报处理错误");
    		 ret.put("data", data);
    		 return ret.toJSONString();
    	 }
        ret.put("ret_code", 0);
        ret.put("ret_msg", "处理成功");
        ret.put("data", data);
        return ret.toJSONString();
    }
   
}
